package command_line;
import methods.Controls;
import java.io.*;
import java.util.Scanner;

/**
 * 大家写的时候可以把这些功能写在一个类里，一个功能是一个方法，但方法之间可能还会相互调用，如移动文件mv指令，需要先把文件复制过去，
 * 然后删除原文件（调用delete方法），封装完这些功能后，在新的一个类里边写main方法， 调用已经分装好的类里的方法。
 * Main方法里可以是个while（true）死循环，通过处理输入的指令字符串（涉及到string字符串的处理，是第二次培训时候的内容），
 * 确定调用什么方法，执行哪个操作，输入了exit则退出循环，结束操作。
 *
 * 注意细节，如在新建文件或文件夹时，需要先判断该目录下是否已存在该文件或文件夹，若存在则不允许创建；删除时若无此文件，
 * 则无法执行删除操作； 输入了错误的指令要提示输入错误，重新输入等等。
 * @author wushuang
 */
public class Command {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Controls controls = new Controls();
        File file = new File(controls.getCurrentPath()+File.separator);

            while(true){
                System.out.print(controls.getCurrentPath()+ " > ");
                String input = in.nextLine();
                input = input.trim();
                String[] tokens = input.split(" ");
                if(input.equals("exit")) {
                    break;
                }
                switch(tokens[0]){
                    case "cd":controls.cd(input);break;
                    case "cd..":controls.cdBack();break;
                    case "touch":controls.touch(input);break;
                    case "delete":controls.delete(input);break;
                    case "mkdir":controls.mkdir(input);break;
                    case "mv":controls.mv(input);break;
                    case "ls":controls.ls();break;
                    case "cat":controls.cat(input);break;
                    case "input":controls.input(input);break;
                    default:
                        System.out.println("你所调用的指令不存在！");break;
                }
        }
    }
}
